package com.zhu.pre.service;

import com.sanploy.common.domain.UserAddress;
import com.sanploy.common.domain.vo.UserAddressVo;
import com.sanploy.common.vo.BaseException;

import java.util.List;

/**
 * Created by yingzhi zhu on 2017/9/26.
 * @author yingzhi zhu
 * 手机用户收货地址逻辑处理接口
 */
public interface MUserAddressService {
    /**
     * 添加用户收货地址
     * @param userAddress 用户收货地址实体
     * @param token 请求认证
     * @return 是否成功
     * @throws BaseException 自定义异常
     */
    int addUserAddress(UserAddress userAddress, String token) throws BaseException;

    /**
     * 获取用户收货地址
     * @param token 请求认证
     * @return 收货地址 list
     * @throws BaseException 自定义异常
     */
    List<UserAddressVo> getUserAddress(String token) throws BaseException;

    /**
     * 获取默认的收货地址
     * @param token 请求认证
     * @return 收货地址实体
     * @throws BaseException 自定义异常
     */
    UserAddressVo getUserDefaultAddress(String token) throws BaseException;

    /**
     * 设置默认收货地址
     * @param token 请求认证
     * @param id 收货地址的id
     * @return 是否成功
     * @throws BaseException 自定义异常
     */
    int setDefaultAddress(String token, Long id) throws BaseException;

    /**
     * 删除收货地址
     * @param id  收货地址的id
     * @param token 请求认证
     * @return 是否成功
     * @throws BaseException 自定义异常
     */
    int deleteAddress(Long id, String token) throws BaseException;

    /**
     * 更新收货地址
     * @param userAddress 用户收货地址实体
     * @param token 请求认证
     * @return  是否成功
     * @throws BaseException 自定义异常
     */
    int updateAddress(UserAddress userAddress, String token) throws BaseException;

    /**
     * 查找某一个收货地址详情
     * @param id 收货地址的id
     * @param token 请求认证
     * @return 收货地址实体
     * @throws BaseException 自定义异常
     */
    UserAddressVo findOneAddress(Long id, String token) throws BaseException;
}
